﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Utility.Data.DbClient
{
    /// <summary>
    /// DBParameter 配套 数据类型
    /// 参数类型放大 1000 ,实际使用需要转换成
    /// </summary>
    public enum DBType
    {
        #region MSSQL    1000 开头 
        //
        // 摘要:
        //     System.Int64. 64 位的有符号整数。
        MsSql_BigInt = 1000,
        //
        // 摘要:
        //     System.Byte 类型的 System.Array。 二进制数据的固定长度流，范围在 1 到 8,000 个字节之间。
        MsSql_Binary = 1001,
        //
        // 摘要:
        //     System.Boolean. 无符号数值，可以是 0、1 或 null。
        MsSql_Bit = 1002,
        //
        // 摘要:
        //     System.String. 非 Unicode 字符的固定长度流，范围在 1 到 8,000 个字符之间。
        MsSql_Char = 1003,
        //
        // 摘要:
        //     System.DateTime. 日期和时间数据，值范围从 1753 年 1 月 1 日到 9999 年 12 月 31 日，精度为 3.33 毫秒。
        MsSql_DateTime = 1004,
        //
        // 摘要:
        //     System.Decimal. 固定精度和小数位数数值，在 -10 38 -1 和 10 38 -1 之间。
        MsSql_Decimal = 1005,
        //
        // 摘要:
        //     System.Double. -1.79E +308 到 1.79E +308 范围内的浮点数。
        MsSql_Float = 1006,
        //
        // 摘要:
        //     System.Byte 类型的 System.Array。 二进制数据的可变长度流，范围在 0 到 2 31 -1（即 2,147,483,647）字节之间。
        MsSql_Image = 1007,
        //
        // 摘要:
        //     System.Int32. 32 位带符号整数。
        MsSql_Int = 1008,
        //
        // 摘要:
        //     System.Decimal. 货币值，范围在 -2 63（即 -922,337,203,685,477.5808）到 2 63 -1（即 +922,337,203,685,477.5807）之间，精度为千分之十个货币单位。
        MsSql_Money = 109,
        //
        // 摘要:
        //     System.String. Unicode 字符的固定长度流，范围在 1 到 4,000 个字符之间。
        MsSql_NChar = 1010,
        //
        // 摘要:
        //     System.String. Unicode 数据的可变长度流，最大长度为 2 30 - 1（即 1,073,741,823）个字符。
        MsSql_NText = 1011,
        //
        // 摘要:
        //     System.String. Unicode 字符的可变长度流，范围在 1 到 4,000 个字符之间。 如果字符串大于 4,000 个字符，隐式转换会失败。
        //     在使用比 4,000 个字符更长的字符串时，请显式设置对象。 当数据库列为 nvarchar(max) 时，使用 System.Data.SqlDbType.NVarChar
        //     。
        MsSql_NVarChar = 1012,
        //
        // 摘要:
        //     System.Single. -3.40E +38 到 3.40E +38 范围内的浮点数。
        MsSql_Real = 13,
        //
        // 摘要:
        //     System.Guid. 全局唯一标识符（或 GUID）。
        MsSql_UniqueIdentifier = 1014,
        //
        // 摘要:
        //     System.DateTime. 日期和时间数据，值范围从 1900 年 1 月 1 日到 2079 年 6 月 6 日，精度为 1 分钟。
        MsSql_SmallDateTime = 1015,
        //
        // 摘要:
        //     System.Int16. 16 位带符号整数。
        MsSql_SmallInt = 1016,
        //
        // 摘要:
        //     System.Decimal. 货币值，范围在 -214,748.3648 到 +214,748.3647 之间，精度为千分之十个货币单位。
        MsSql_SmallMoney = 1017,
        //
        // 摘要:
        //     System.String. 非 Unicode 数据的可变长度流，最大长度为 2 31 -1（即 2,147,483,647）个字符。
        MsSql_Text = 1018,
        //
        // 摘要:
        //     System.Byte 类型的 System.Array。 自动生成的二进制数字，它们保证在数据库中是唯一的。 timestamp 通常用作为表行添加版本戳的机制。
        //     存储大小为 8 字节。
        MsSql_Timestamp = 1019,
        //
        // 摘要:
        //     System.Byte. 8 位无符号整数。
        MsSql_TinyInt = 1020,
        //
        // 摘要:
        //     System.Byte 类型的 System.Array。 二进制数据的可变长度流，范围在 1 到 8,000 个字节之间。 如果字节数组大于 8,000
        //     个字节，隐式转换会失败。 在使用比 8,000 个字节大的字节数组时，请显式设置对象。
        MsSql_VarBinary = 1021,
        //
        // 摘要:
        //     System.String. 非 Unicode 字符的可变长度流，范围在 1 到 8,000 个字符之间。 当数据库列为 varchar(max) 时，使用
        //     System.Data.SqlDbType.VarChar 。
        MsSql_VarChar = 1022,
        //
        // 摘要:
        //     System.Object. 特殊数据类型，可以包含数值、字符串、二进制或日期数据，以及 SQL Server 值 Empty 和 Null，后两个值在未声明其他类型的情况下采用。
        MsSql_Variant = 1023,
        //
        // 摘要:
        //     XML 值。 使用 System.Data.SqlClient.SqlDataReader.GetValue(System.Int32) 方法或 System.Data.SqlTypes.SqlXml.Value
        //     属性获取字符串形式的 XML，或通过调用 System.Data.SqlTypes.SqlXml.CreateReader 方法获取 System.Xml.XmlReader
        //     形式的 XML。
        MsSql_Xml = 1025,
        //
        // 摘要:
        //     SQL Server 用户定义类型 (UDT)。
        MsSql_Udt = 1029,
        //
        // 摘要:
        //     指定表值参数中包含的构造数据的特殊数据类型。
        MsSql_Structured = 1030,
        //
        // 摘要:
        //     日期数据，值范围从公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日。
        MsSql_Date = 1031,
        //
        // 摘要:
        //     基于 24 小时制的时间数据。 时间值范围从 00:00:00 到 23:59:59.9999999，精度为 100 毫微秒。 对应于 SQL Server
        //     time 值。
        MsSql_Time = 1032,
        //
        // 摘要:
        //     日期和时间数据。 日期值范围从公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日。 时间值范围从 00:00:00 到 23:59:59.9999999，精度为
        //     100 毫微秒。
        MsSql_DateTime2 = 1033,
        //
        // 摘要:
        //     显示时区的日期和时间数据。 日期值范围从公元 1 年 1 月 1 日到公元 9999 年 12 月 31 日。 时间值范围从 00:00:00 到 23:59:59.9999999，精度为
        //     100 毫微秒。 时区值范围从 -14:00 到 +14:00。
        MsSql_DateTimeOffset = 1034,
        #endregion

        #region ORACLE 2000 开头
        Oracle_BFile = 2101,
        Oracle_Blob = 2102,
        Oracle_Byte = 2103,
        Oracle_Char = 2104,
        Oracle_Clob = 2105,
        Oracle_Date = 2106,
        Oracle_Decimal = 2107,
        Oracle_Double = 2108,
        Oracle_Long = 2109,
        Oracle_LongRaw = 2110,
        Oracle_Int16 = 2111,
        Oracle_Int32 = 2112,
        Oracle_Int64 = 2113,
        Oracle_IntervalDS = 2114,
        Oracle_IntervalYM = 2115,
        Oracle_NClob = 2116,
        Oracle_NChar = 2117,
        Oracle_NVarchar2 = 2119,
        Oracle_Raw = 2120,
        Oracle_RefCursor = 2121,
        Oracle_Single = 2122,
        Oracle_TimeStamp = 2123,
        Oracle_TimeStampLTZ = 2124,
        Oracle_TimeStampTZ = 2125,
        Oracle_Varchar2 = 2126,
        Oracle_XmlType = 2127,
        Oracle_Array = 2128,
        Oracle_Object = 2129,
        Oracle_Ref = 2130,
        Oracle_BinaryDouble = 2132,
        Oracle_BinaryFloat = 2133,
        #endregion

        #region MySql 3000 开头
        MySql_Decimal = 3000,
        MySql_Byte = 3001,
        MySql_Int16 = 3002,
        MySql_Int32 = 3003,
        MySql_Float = 3004,
        MySql_Double = 3005,
        MySql_Timestamp = 3007,
        MySql_Int64 = 3008,
        MySql_Int24 = 3009,
        MySql_Date = 3010,
        MySql_Time = 3011,
        MySql_DateTime = 3012,
        MySql_Year = 3013,
        MySql_Newdate = 3014,
        MySql_VarString = 3015,
        MySql_Bit = 3016,
        MySql_JSON = 3245,
        MySql_NewDecimal = 3246,
        MySql_Enum = 3247,
        MySql_Set = 3248,
        MySql_TinyBlob = 3249,
        MySql_MediumBlob = 3250,
        MySql_LongBlob = 3251,
        MySql_Blob = 3252,
        MySql_VarChar = 3253,
        MySql_String = 3254,
        MySql_Geometry = 3255,
        MySql_UByte = 3501,
        MySql_UInt16 = 3502,
        MySql_UInt32 = 3503,
        MySql_UInt64 = 3508,
        MySql_UInt24 = 3509,
        MySql_Binary = 3600,
        MySql_VarBinary = 3601,
        MySql_TinyText = 3749,
        MySql_MediumText = 3750,
        MySql_LongText = 3751,
        MySql_Text = 3752,
        MySql_Guid = 3800,
        #endregion

        #region SQLite 4000 开头
        SQLite_AnsiString = 4000,
        SQLite_Binary = 4001,
        SQLite_Byte = 4002,
        SQLite_Boolean = 4003,
        SQLite_Currency = 4004,
        SQLite_Date = 4005,
        SQLite_DateTime = 4006,
        SQLite_Decimal = 4007,
        SQLite_Double = 4008,
        SQLite_Guid = 4009,
        SQLite_Int16 = 4010,
        SQLite_Int32 = 4011,
        SQLite_Int64 = 4012,
        SQLite_Object = 4013,
        SQLite_SByte = 4014,
        SQLite_Single = 4015,
        SQLite_String = 4016,
        SQLite_Time = 4017,
        SQLite_UInt16 = 4018,
        SQLite_UInt32 = 4019,
        SQLite_UInt64 = 4020,
        SQLite_VarNumeric = 4021,
        SQLite_AnsiStringFixedLength = 4022,
        SQLite_StringFixedLength = 4023,
        SQLite_Xml = 4025,
        SQLite_DateTime2 = 4026,
        SQLite_DateTimeOffset = 4027,
        #endregion
    }
}
